/**
 * Copyright 2011 bccapi.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.bccapi.core;

/**
 * Class for generating elliptic curve signatures used with bitcoin. 
 * 
 */
public class ECSigner {
   private ECKeyManager _keyManager;
   private int _keyIndex;

   /**
    * Construct an ECSigner from an ECKeyManager and a key index
    * 
    * @param keyManager
    *           The ECKeyManager to use.
    * @param keyIndex
    *           The key index to sign with.
    */
   public ECSigner(ECKeyManager keyManager, int keyIndex) {
      _keyManager = keyManager;
      _keyIndex = keyIndex;
   }

   /**
    * Sign data with this ECSigner
    * 
    * @param data
    *           The data to sign.
    * @return the signature of the data
    */
   public byte[] sign(byte[] data) {
      return _keyManager.sign(data, _keyIndex);
   }

   /**
    * Get the public key that can verify the signatures generated by this
    * signer.
    * 
    * @return The public key that can verify the signatures generated by this
    *         signer.
    */
   public PublicECKey getPublicKey() {
      return _keyManager.getPublicKey(_keyIndex);
   }

}
